package com.arpa.wms.service;

import com.arpa.wms.domain.dto.InboundDTO;
import com.arpa.wms.domain.dto.InboundImportDTO;
import com.arpa.wms.domain.entity.Inbound;
import com.arpa.wms.domain.vo.InboundImportVO;
import com.arpa.wms.domain.vo.InboundVO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 入库单 服务类
 * </p>
 *
 * @author LEO
 * @since 2020-08-04
 */
public interface IInboundService extends IService<Inbound> {

    /**
     * 保存
     * @param entity
     * @return
     */
    @Override
    boolean save(Inbound entity);

    /**
     * 根据code更新实体
     * @param entity
     * @return
     */
    int updateByCode(Inbound entity);

    /**
     * 查询列表
     * @param inboundDTO
     * @return
     */
    List<InboundVO> queryList(InboundDTO inboundDTO);

    /**
     * 查询合计,包含总数
     * @param inboundDTO
     * @return
     */
    InboundVO queryListSum(InboundDTO inboundDTO);

    /**
     * 查询合计,包含总数
     * @param inboundDTO
     * @return
     */
    InboundVO queryListTotal(InboundDTO inboundDTO);

    InboundVO getOneByCode(String code);



    /**
     * 一周内所有仓库的入库数量
     * @return
     */
    List<Map<String,Object>> inboundCount(List<String> warehouseCodes,List<String> shipmentCodes,String fdt);

    /**
     * 批量插入入库单
     * @param inbounds
     */
    void batchInsert(List<Inbound> inbounds);

    /**
     * 入库订单数量统计 Visual
     * @return
     */
    String inboundQuantityTrend(String type, String time, String status);

    List<InboundImportVO> importInbound(InboundDTO inboundDTO);

    /**
     * 查询导入单合计,包含总数
     * @param inboundDTO
     * @return
     */
    InboundImportVO importInboundSum(InboundDTO inboundDTO);

    /**
     * 重构入参
     * @param inboundImportDTO
     * @return
     */
    InboundDTO constructQueryParams(InboundImportDTO inboundImportDTO,InboundDTO inboundDTO);

}
